/*
 *
 *
 *
 */
 
#include "Audio.h"


#ifndef _AUDIO_CPP_
#define _AUDIO_CPP_

/*
 * paremetros:
 * fileName     nome do arquivo de audio
 * type         informe 1 para musica e qualquer outro valor para efeitos sonoros
 */ 
Audio::Audio(string fileName, int type)
{
    this->fileName = fileName;
    if(type == 1)
    {
        sound = NULL;
        if((music = Mix_LoadMUS(fileName.c_str())) == NULL)
            fprintf(stderr,"Erro ao carregar arquivo de Audio %s\n%s\n",fileName.c_str(),Mix_GetError());
    }
    else
    {
        music = NULL;
        if((sound = Mix_LoadWAV(fileName.c_str())) == NULL)
            fprintf(stderr,"Erro ao carregar arquivo de Audio %s\n%s\n",fileName.c_str(),Mix_GetError());
    }
}

/*
 * 
 */ 
Audio::~Audio(void)
{
    if(music != NULL)
        Mix_FreeMusic(music);
    if(sound != NULL)
        Mix_FreeChunk(sound);
}

/*
 * 
 */ 
void Audio::play(int n)
{
    if((sound == NULL) && (music != NULL))
    {
        if(Mix_PlayMusic(music, n)==-1) 
            fprintf(stderr,"Erro ao executar arquivo de Audio %s\n%s\n",fileName.c_str(),Mix_GetError());
    }
    if((sound != NULL) && (music == NULL))
    {
        if(Mix_PlayChannel(-1,sound, n)==-1) 
            fprintf(stderr,"Erro ao executar arquivo de Audio %s\n%s\n",fileName.c_str(),Mix_GetError());
    }
}

/*
 * 
 */ 
void Audio::stop(void)
{
    if(sound == NULL)
    {
        if(Mix_PlayingMusic() && !Mix_PausedMusic())
            Mix_PauseMusic();
    }
}

#endif
